/*
  Author: Joshua Gan (josh.gan@gmail.com)
  Date:   September 3, 2007
  File:   FacebookServiceWrapper.java

  Description:
      Heavily copied from the FacebookRestClient. Needed to open
      up certain properties to enable infinite sessions.


  +---------------------------------------------------------------------------+
  | Facebook Development Platform Java Client                                 |
  +---------------------------------------------------------------------------+
  | Copyright (c) 2007 Facebook, Inc.                                         |
  | All rights reserved.                                                      |
  |                                                                           |
  | Redistribution and use in source and binary forms, with or without        |
  | modification, are permitted provided that the following conditions        |
  | are met:                                                                  |
  |                                                                           |
  | 1. Redistributions of source code must retain the above copyright         |
  |    notice, this list of conditions and the following disclaimer.          |
  | 2. Redistributions in binary form must reproduce the above copyright      |
  |    notice, this list of conditions and the following disclaimer in the    |
  |    documentation and/or other materials provided with the distribution.   |
  |                                                                           |
  | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
  | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
  | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
  | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
  | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
  | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
  | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
  | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
  | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
  | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
  +---------------------------------------------------------------------------+
  | For help with this library, contact developers-help@facebook.com          |
  +---------------------------------------------------------------------------+
 */

package org.eclipse.higgins.idas.cp.f8;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

import com.facebook.api.*;

import edu.stanford.ejalbert.BrowserLauncher;


/**
 * A utility for constructing the client the FacebookRestClient,
 *  which is used by the <a href="http://developer.facebook.com/">f8</a>
 *  Context Provider to use the f8 API.
 *  
 * @author josh.gan@gmail.com
 */
public class F8ClientFactory {

    
    public F8ClientFactory() { }
    
    
    /*
     *  To Do:
     *      A constructor that handles if you don't have a infinite session set-up.
     */
    public static FacebookRestClient createF8Client(String apiKey, String apiSecret, String sessionKey, String sessionSecret) throws IOException {
        
            
            FacebookRestClient client = new FacebookJsonRestClient(apiKey, apiSecret, sessionKey);
            
            client.setIsDesktop(true);
           
 

            client.setDebug(true);
            
            String auth = client.auth_createToken();
            System.out.println("auth token: " + auth);
            BrowserLauncher browserLauncher = new BrowserLauncher(null);
            browserLauncher.openURLinBrowser(props.getProperty("login_url") + "&api_key=" +
                                             props.getProperty("api_key") + "&auth_token=" + auth);
            System.out.println("hit enter after you have logged into FB");
            System.in.read();
            // Thread.sleep(5000); // in ms

            client.auth_getSession(auth);
            Document d = client.friends_get();
            FacebookXmlRestClient.printDom(d, "  ");

            
            
            
            return client;
    }
}
